package algorithm.easy;

/**
 * @BelongsProject: LeetCode
 * @BelongsPackage: algorithm.easy
 * @Author: 江岸
 * @CreateTime: 2021-02-28 10:31
 * @Description: 如果数组是单调递增或单调递减的，那么它是单调的。
 *
 * 如果对于所有 i <= j，A[i] <= A[j]，那么数组 A 是单调递增的。 如果对于所有 i <= j，A[i]> = A[j]，那么数组 A 是单调递减的。
 *
 * 当给定的数组 A 是单调数组时返回 true，否则返回 false。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/monotonic-array
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class IsMonotonic896 {

    public boolean isMonotonic(int[] A) {
        if(A.length<=2){
            return true;
        }
        boolean flag = true;
        for (int i=1;i< A.length-1;i++){
            if (!(A[i-1]>=A[i]&&A[i]>=A[i+1])){
                flag = false;
                break;
            }
        }
        if (flag){
            return true;
        }
        flag = true;
        for (int i=1;i< A.length-1;i++){
            if (!(A[i-1]<=A[i]&&A[i]<=A[i+1])){
                flag = false;
                break;
            }
        }
        return flag;
    }

    //一次遍历
    public boolean 官方题解(int[] A) {
        boolean inc = true;
        boolean dec = true;
        for (int i = 1; i < A.length; ++i) {
            if (A[i] < A[i - 1])
                inc = false;
            if (A[i] > A[i - 1])
                dec = false;
            if (!inc && !dec)
                return false;
        }
        return true;
    }

}
